package com.tinyshardingjdbc.tinyshardingjdbc.shardingasync.annotaion;


import com.tinyshardingjdbc.tinyshardingjdbc.shardingasync.core.YearMonthProcessor;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 标注dao层,视为sql分表sql
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface TinyShardingJdbc {


    /**
     * 废弃
     */
    String type() default "yearMonthProcessor";

    /**
     * 分表字段
     */
    String filed();

    /**
     * yearMonth 和year 需要，为了提示效率,必传
     */
    String tableStart() default "tableStartDate";

    /**
     * yearMonth 和year 需要，为了提示效率,必传
     */
    String tableEnd() default "tableEndDate";

    /**
     * 基础表名
     */
    String tableName();

    /**
     * hash
     */
    int hashCount() default 10;

    /*
     *  TypeProcessor  实现对象
     * YearMonthProcessor.class，YearProcessor，HashProcessor
     *
     *
     * */
    Class clz() default YearMonthProcessor.class;

}
